package com.atguigu.demojuc.chap09;

public class VolatileDemo {

    // volatile  保证  JMM  可见性
    private  volatile static Integer flag = 1; //共享变量

    public static void main(String[] args)  throws InterruptedException { //main线程

        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("我是子线程工作内存flag的值：" + flag);  //将主内存数据读到本地内存产生副本。
                while(flag == 1){} //main线程修改副本后,同步到主内存,子线程能看到flag值变了吗?
                System.out.println("子线程操作结束..." + flag);
            }
        }).start();

        Thread.sleep(500);

        //flag=1  将共享变量读到本地内存中。产生副本。
        flag = 2; //主线程修改flag的值   修改了本地内存数据
        System.out.println("我是主线程工作内存flag的值：" + flag);
    }
}